package com.blog.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.tags.Tag;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import java.util.List;

//接口管理-配置类
@Configuration
public class SwaggerConfig {

    // 接口分组
    @Bean
    public GroupedOpenApi produceApi() {
        // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                // 分组名称，使用英文，中文访问异常(使用displayName设置中文名，避免直接使用group设置中文时访问异常)
                .group("server API")
                .displayName("服务端 API接口") // 使用displayName设置中文接口分组名时，group仍不可或缺
                .packagesToScan("com.blog.controller.admin")
                .build();
    }
    @Bean
    public GroupedOpenApi userApi() {
        // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                // 分组名称，使用英文，中文访问异常(使用displayName设置中文名，避免直接使用group设置中文时访问异常)
                .group("client API")
                .displayName("客户端 API接口") // 使用displayName设置中文接口分组名时，group仍不可或缺
                .packagesToScan("com.blog.controller.user")
                .build();
    }

    // 设置 openapi 基础参数
    @Bean("produce")
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("Blog个人博客 -> 管理端 API 管理")
                        .contact(new Contact().name("libinbin、chenzejia").email("468416913@qq.com").url("http://blog.net/"))
                        .version("1.0")
                            .description( "SpringBoot 集成 Knife4j ，进行Blog个人博客系统的 API 管理")
                        .license(new License().name("Apache 2.0")));
    }

}
